package com.ttg.web.dao.Impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.ttg.model.mapper.VipBindTagMapper;
import com.ttg.model.pojo.VipBindTag;
import com.ttg.web.dao.VipBindTagDao;
import org.springframework.stereotype.Service;

import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author zhangHongYuan
 * @description
 * @date 2024/3/5 15:18
 */
@Service
public class VipBindTagDaoImpl extends ServiceImpl<VipBindTagMapper,VipBindTag> implements VipBindTagDao {
    @Override
    public VipBindTag getByTagIdAndVipId(Long tagId, Long vipId) {
        LambdaQueryWrapper<VipBindTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(VipBindTag::getVipId,vipId);
        lambdaQueryWrapper.eq(VipBindTag::getTagId,tagId);
        return getOne(lambdaQueryWrapper);
    }

    @Override
    public VipBindTag getByTagIdAndMctNo(Long tagId, String mctNo) {
        LambdaQueryWrapper<VipBindTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(VipBindTag::getMctNo,mctNo);
        lambdaQueryWrapper.eq(VipBindTag::getTagId,tagId);
        return getOne(lambdaQueryWrapper);
    }

    @Override
    public Map<Long, Integer> getGroupByTagCount() {
        return baseMapper.getGroupByTagCount();
    }


    @Override
    public List<VipBindTag> getByVipId(Long vipId) {
        LambdaQueryWrapper<VipBindTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(VipBindTag::getVipId,vipId);
        return list(lambdaQueryWrapper);
    }

    @Override
    public boolean removeByTagId(Long tagId) {
        LambdaQueryWrapper<VipBindTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(VipBindTag::getTagId,tagId);
        if (baseMapper.delete(lambdaQueryWrapper)>0) {return true;}
        return false;
    }

    @Override
    public int countTagByVipId(Long vipId) {
        LambdaQueryWrapper<VipBindTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(VipBindTag::getVipId,vipId);
        return count(lambdaQueryWrapper);
    }

    @Override
    public int countTagByMctNo(String mctNo) {
        LambdaQueryWrapper<VipBindTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(VipBindTag::getMctNo,mctNo);
        return count(lambdaQueryWrapper);
    }

    @Override
    public int countByTagId(Long tagId) {
        LambdaQueryWrapper<VipBindTag> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(VipBindTag::getTagId,tagId);
        return count(lambdaQueryWrapper);
    }

    @Override
    public boolean deleteBytagId(Long tagId) {
        LambdaUpdateWrapper<VipBindTag> wrapper = new LambdaUpdateWrapper<>();
        wrapper.eq(VipBindTag::getTagId,tagId);
        return remove(wrapper);
    }

    @Override
    public int addVipBindTag(String sql) {
        return baseMapper.addVipBindTag(sql);
    }

    @Override
    public int addMctBindTag(String sql) {
        return baseMapper.addMctBindTag(sql);
    }

    @Override
    public Map<String,Map<String,Integer>> numByMctNos(List<String> mctNos) {
        return baseMapper.numByMctNos(mctNos);
    }

    @Override
    public List<VipBindTag> selectBytags(List<String> containsTagIds, List<String> excludeTagIds) {
        return baseMapper.selectBytags(containsTagIds, excludeTagIds);
    }


}
